package com.example.myapplication.hell

import androidx.annotation.ColorInt

//定义一个入口
fun main() {
    var className = "Person"

    //定义一个类
    class Person {
        //定义一个属性
        var name = "张三"
        var age = 18

        //定义一个方法
        fun say() {
            println("hello world $name $age $className")
        }
    }
    //实例化一个对象
    val person = Person()
    //调用对象的方法
    person.say()
    //定一个类加init方法
    class Person2 {
        var name = "张三"
        var age = 18

        init {
            println("init")
            require(name.isNotEmpty()) {
                "张三活不到$age 岁"
            }
        }
    }
    //实例化一个对象
    val person2 = Person2()

    //定义一个类传入两个参数
//    class Dog(var name: String, var age: Int) {
//        init {
//            println("init $name $age")
//            require(age >= 0) {
//                "age 必须大于等于0"
//            }
//            require(name.isNotEmpty()) {
//                "name 不能为空"
//            }
//        }
//    }
//    //实例化一个对象
//    val dog = Dog("张三", 18)
//    //调用对象的方法
//    println("${dog.name} ${dog.age}")
    //写一个主构造类里面夹杂着次构造类‘
    class Dog2(var name: Int) {
        var age: Int = 0
        var color: Int = 0

        init {
            println("init $name $age")
            require(age >= 0) {
                "age 必须大于等于0"
            }
        }

        constructor(name: String, age: Int) : this(age) {
            println("次构造")
            this.age = age
        }

        constructor(name: String, age: Int, colorInt: Number) : this(name, age) {
            println("次构造2")
            this.color = color
        }

    }
    //实例化一个对象
    val dog2 = Dog2("张三", 18, 1)

    //新写一个类的继承
    open class persons(var nume: String, var age: Number) {
        //行为
        open fun say() {
            println("hello world 踩踩踩踩踩 ")
        }
    }

    //新写一个类的继承
    class student(name: String, age: Number, var value: String) : persons(name, age) {
        //行为
        override fun say() {
            super.say()
            println("hello2 world 踩踩踩踩踩 $nume $age $value")
        }
    }
    //实例化一个对象
    val studentss = student("张三", 18, "123")
    //调用对象的方法
    studentss.say()
    println("${studentss.nume} ${studentss.age} ${studentss.value}")
}
